package com.dollar.luban.designPattern.visitor.transfile.v1.v2;

import java.io.File;

/**
 * 包装 File,支持访问器访问
 */
public class FileWrapper {
    File file;

    public FileWrapper(File file) {
        this.file = file;
    }

    /**
     * 封装遍历逻辑
     * 而对文件的具体业务逻辑 封装在 visitor 的 visit() 中
     * @param visitor
     */
    public void accept(FileVisitor visitor){
        doAccept(file, visitor);
    }

    private void doAccept(File file, FileVisitor visitor) {
        visitor.visit(file);
        if (file.isDirectory()) {
            for (File f : file.listFiles()) {
                visitor.visit(f);
            }
        }
    }
}
